'''
魔术方法（内建方法、内部方法）
    __init__()  初始化对象（实例属性的设置，一些其他的初始化工作） 是创建对象时自动调用，不需要手动调用
    __str__()   打印对象时调用该方法，并且打印__str__的返回值
    __del__()   对象销毁前，执行的方法
    __new__()   单例类
'''
class Cat:
    def __init__(self,type):
        print("准备猫粮")
        self.type= type


    def catch(self):
        print("抓老鼠")

    def __str__(self):
        print("------------------")
        return f"Cat[type]={self.type}"

    def __del__(self):
        print(f"{self.type}对象销毁")

mimi= Cat("狸花")
mimi.catch()

mimi1= Cat("波斯猫")

# 不同的对象内存地址不同
print(mimi) # <__main__.Cat object at 0x00000131F8A38DA0>
print(mimi1) # <__main__.Cat object at 0x00000131F8A38DA0>

print("-----执行结束----")